/*
 * Copyright (c) 2025, 大连理工大学 (Dalian University of Technology)
 *
 * Licensed under the Mulan PSL v2.
 * You can use this file according to the terms and conditions of the Mulan PSL v2.
 * You may obtain a copy of the License at
 *
 *     http://license.coscl.org.cn/MulanPSL2
 *
 * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
 * EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
 * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. SEE THE MULAN PSL v2
 * FOR MORE DETAILS.
 */

#pragma once
#include "DataStructure/Common/Out.h"
#include "DataStructure/Common/SGNamespace.h"
#include "DataStructure/Common/Status.h"
/**
 * @brief 定义 Import 命名空间的开始部分。
 */
#define IMPORT_NAMESPACE_OPEN \
    namespace Import          \
    {

/**
 * @brief 定义 Import 命名空间的结束部分。
 */
#define IMPORT_NAMESPACE_CLOSE \
    }                          \
    ;

/**
 * @brief 定义 BDF 命名空间的开始部分。
 */
#define BDF_NAMESPACE_OPEN \
    namespace BDF          \
    {

/**
 * @brief 定义 BDF 命名空间的结束部分。
 */
#define BDF_NAMESPACE_CLOSE \
    }                       \
    ;

/**
 * @brief 定义 SG 和 Import 嵌套命名空间的开始部分。
 */
#define SG_IMPORT_NAMESPACE_OPEN SG_NAMESPACE_OPEN IMPORT_NAMESPACE_OPEN

/**
 * @brief 定义 SG 和 Import 嵌套命名空间的结束部分。
 */
#define SG_IMPORT_NAMESPACE_CLOSE IMPORT_NAMESPACE_CLOSE SG_NAMESPACE_CLOSE

/**
 * @brief 定义 SG、Import 和 BDF 嵌套命名空间的开始部分。
 */
#define SG_IMPORT_BDF_NAMESPACE_OPEN SG_NAMESPACE_OPEN IMPORT_NAMESPACE_OPEN BDF_NAMESPACE_OPEN

/**
 * @brief 定义 SG、Import 和 BDF 嵌套命名空间的结束部分。
 */
#define SG_IMPORT_BDF_NAMESPACE_CLOSE IMPORT_NAMESPACE_CLOSE SG_NAMESPACE_CLOSE BDF_NAMESPACE_CLOSE

/**
 * @brief 在 SG::DBManager 命名空间中声明 DBServiceFactory 类。
 */

#define DBSERVICEFACTORY_DEC        \
    namespace SG                    \
    {                               \
        namespace DBManager         \
        {                           \
            class DBServiceFactory; \
        }                           \
    }
